 /**
 * 逻辑、功能相关描述: <br>
 *
 * @author 付湘辉  <br>
 * 编写日期：2008-8-29  <br>
 */
package com.ce.pms.charge.dao;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.ce.pms.base.dao.IPmsBaseDao;
import com.ce.pms.charge.model.AbstractSubAccount;
import com.ce.pms.charge.model.ChargeAccountDomain;
import com.ce.pms.charge.vo.SubAccountBean;

/**
 * 	名称: com.ce.pms.charge.dao.ISubAccountDao <br>
 *  子帐户dao
 *
 * @author  付湘辉  <br>
 * Created on： 2008-8-29 <br>
 * @author <br>
 * update on： <br>
 * why: <br>
 */
public interface ISubAccountDao extends IPmsBaseDao<AbstractSubAccount> {

	/**
	 * 功能描述:  根据银行ID 查询银行物业管理子帐户<br>且只查询产权房的银行帐号.
	 * @param bankId
	 * @return
	 * Create author:yixianjian <br>
	 * Create on:2008-9-23  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public List<ChargeAccountDomain> findSubAccountByBankId(Long bankId);
	/**
	 * 功能描述: 根据银行ID 查询银行子帐户<br>且只查询管理房的银行帐号 <br>
	 * 返回的结果为一个list,每项为一个Object数组,第一个物业子帐户,第二个为帐户,第三个为划款银行帐号
	 * @param bankId
	 * @return
	 * Create author:yixianjian <br>
	 * Create on:2008-12-4  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public List findSubAccountWithVirtualHouseByBankId(Long bankId);
	/**
	 * 方法描述: 根据房间ID查询收费子账户
	 * @author 胡煦
	 * Create on:2008-10-9
	 * @param hosueId
	 * @return ChargeAccountDomain
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public ChargeAccountDomain getChargeAccountDoBy(Long hosueId);

	/**
	 * 功能描述:更新帐户余额, 余额 ＝ 原余额 + 给定金额<br>
	 * @param subAccountIDBalances<br>
	 * Create author:罗军林<br>
	 * Create on:2008-9-27<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public void updateSubAccountBalanceBatchAdd(Map<Long,BigDecimal> subAccountIDBalances);

	/**
	 * 功能描述:更新帐户余额。规则为：原帐户余额-本次给定的余额<br>
	 * @param subAccountIDBalances<br>
	 * Create author:罗军林<br>
	 * Create on:2008-9-27<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public void updateSubAccountBalanceBatch(Map<Long,BigDecimal> subAccountIDBalances);

	/**
	 * 功能描述:更新帐户余额。余额＝原余额－给定金额<br>
	 * @param subAccountIDBalances<br>
	 * Create author:罗军林<br>
	 * Create on:2008-9-27<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public void updateSubAccountBalanceBatchSub(Map<Long,BigDecimal> subAccountIDBalances);

	/**
	 * 功能描述:更新帐户余额为0。<br>
	 * @param subAccountIDBalances<br>
	 * Create author:罗军林<br>
	 * Create on:2008-9-27<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public void updateSubAccountBalanceBatch(List<Long> subAccountIds);

	/**
	 * 功能描述:查询所有的收费子帐户。KEY 房号ID value SubAccountBean对象<br>
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-10-7<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public Map<Long,SubAccountBean> getAllSubAccount();

	/**
	 * 功能描述: 更新指定子账户的锁定状态 <br>
	 * @param subAccountId 指定子账户id
	 * @param lockState 新状态
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-10-13  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public void updateLockState(final Long subAccountId,final String lockState);

	/**
	 * 功能描述: 查询指定id的子账户锁定状态 <br>
	 * @param subAccountId
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-10-20  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public String queryLockStateById(final Long subAccountId);

	/**
	 * 功能描述:返回指定房号ID列表中被锁定借方物业帐户的房号列表。如1-2a,1-2b<br>
	 * @param houseIds
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-10-23<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public String queryLockDdebitChargeSubAccount(String houseIds);
}
